package trunk.besteAukera;
/**
 * 
 */
import java.awt.Color;
import java.awt.Graphics;
import java.util.Vector;

import javax.swing.JTextField;

public class And extends AteLogikoak {
	
	private Color kolorea;
	private Vector<Hanka> hankaBektorea=new Vector<Hanka>();
	private Vector<Hanka> sarreraBektorea=new Vector<Hanka>();
	private Hanka s1, s2, i1;
	private SarreraDatu sd1, sd2;
	private SarreraDatu sarDat=null;

/**
 * Behar dituen parametroak pasata And logikoa eta And, Or, Nor eta
 * Nand fisikoak sortzeko eraikitzailea.
 * @param x1 :And logikoaren irudiko elipsearen ezker iskineko x koordenatua.
 * @param y1 :And logikoaren irudiko elipsearen goiko iskineko y koordenatua.
 * @param hankaKop :And-aren hanka kopurua.
 * @param sarKop :And-aren sarrera kopurua.
 * @param r1 :And elipsearen x ardatzaren (ardatz handia) erradioa da.
 * @param r2 :And elipsearen y ardatzaren (ardatz txikia) erradioa da.
 * @param g1 :And elipsea marrazten hasteko abiapuntua gradutan.
 * @param g2 :And elipsearen arkuak zenbateko luzera izango duen.
 * @param motaFis
 */
	
	//LotLista pasa. 
	public And(int x1, int y1, int hankaKop, int sarKop, int r1, int r2,
			int g1, int g2, String motaFis) {
		super(x1, y1, hankaKop, sarKop, r1, r2, g1, g2, motaFis );

		// TODO Auto-generated constructor stub
		if (motaFisikoa.compareTo("and") == 0){
		s1 = new Hanka(x + 15, y + rad2 / 4, "positiboa", "s", 0, this, "h","ez");
		s2 = new Hanka(x + 15, y + rad2 - rad2 / 4, "positiboa", "s", 1, this, "h","ez");
		i1 = new Hanka(x + rad1 + 20, y + rad2 / 2, "positiboa", "i", 2, this, "h","ez");
		}
		else if (motaFisikoa.compareTo("nor") == 0) {
			s1 = new Hanka(x + 15, y + 12, "negatiboa", "s", 0, this, "h","ez");

			s2 = new Hanka(x + 15, y + 36, "negatiboa", "s", 1, this, "h","ez");

			i1 = new Hanka(x + rad1+20, y + 24, "positiboa", "i", 2, this, "h","ez");
		}
		else if (motaFisikoa.compareTo("nand") == 0) {
			s1 = new Hanka(x + 15, y + 12, "positiboa", "s", 0, this, "h","ez");

			s2 = new Hanka(x + 15, y + 36, "positiboa", "s", 1, this, "h","ez");

			i1 = new Hanka(x +20+ 70, y + 24, "negatiboa", "i", 2, this, "h","ez");
		}
		
		else if (motaFisikoa.compareTo("or") == 0) {
			s1 = new Hanka(x + 15, y + 12, "negatiboa", "s", 0, this, "h","ez");
			s2 = new Hanka(x + 15, y + 36, "negatiboa", "s", 1, this, "h","ez");
			i1 = new Hanka(x + 20+70, y + 24, "negatiboa", "i", 2, this, "h","ez");	
		}
		lotList[0]=s1;
		lotList[1]=s2;
		lotList[2]=i1;
	}
		
/**
 * And irudia marrazten du.
 */

	public void dibujate(Graphics g) {

		g.setColor(Color.black);
		g.drawArc(x, y, rad1, rad2, grad1, grad2);
		g.drawLine(x + rad1 / 2, y, x + rad1 / 2, y + rad2);
			s1.dibujate(g);
			s2.dibujate(g);
			i1.dibujate(g);
	}
	/**
	 * Xagua And irudiaren barnean dagoen edo ez adierazten du.
	 */

	public boolean estaDentro(int x, int y) {
		if ((x > this.x) && (x < (this.x + rad1)) && (y > this.y)
				&& (y < (this.y + rad2))) {
			return true;
		}
		return false;

	}

	/**
	 * And irudiaren laukizuzenaren goi-ezkerreko erpina finkatzen du.
	 * @param x: X ardatzaren posizioa finkatzen du.
	 * @param y: Y ardatzaren posizioa finkatzen du.
	 */
	public void setPosicion(int x1, int y1) {
		this.x = x1;
		this.y = y1;
	}

	public int getX() {
		return x;
	}

	/**
	 * Devuelve la y de la esquina superior izquierda del rectangulo
	 * 
	 * @return y de la esquina superior izquierda del rectangulo
	 */
	public int getY() {
		return y;
	}

	@Override
	protected void funtzioLogikoa(Integer... values) {
		// TODO Auto-generated method stub
		
		
		lotList[2].getIrteera().setBalioa(s1.getSarrera().getBalioa() & s2.getSarrera().getBalioa());
		System.out.println("funtxio logikoan inprimatua:"+lotList[2].getIrteera().getBalioa());
	}

	public Vector<Hanka> getHankak() {
		
		hankaBektorea = new Vector<Hanka>();
		hankaBektorea.addElement(s1);
		hankaBektorea.addElement(s2);
		hankaBektorea.addElement(i1);
		return hankaBektorea;
	}
public Vector<Hanka> getSarreraHankak(){
	sarreraBektorea=new Vector<Hanka>();
	sarreraBektorea.addElement(s1);
	sarreraBektorea.addElement(s2);
	return sarreraBektorea;
}
	public Integer getData1() {
		return data1;
	}

	public Integer getData2() {
		return data2;
	}

	public void setEmaitza(Integer em) {
		emaitza = em;
	
	}
	public Hanka getIrteeraHanka(){
		return i1;
	}
	

	
//	public void sarreraEzabatu(SarreraDatu sd,Graphics g){
//	sd.loturaEzabatu();
//	//irudia ezabatu
//	sd.ezabatu(g);
//	}
	
	
//public void borratuHanka(Hanka h){
//	int izen=h.getIzena();
//	for (Hanka hank:hankaBektorea){
//		if (hank.getIzena()==izen){
//			hankaBektorea.remove(hank);
//		h = new Hanka(x + 15, y + rad2 / 4, "positiboa", "s", izen);
//		hankaBektorea.addElement(h);
//		}
//	}
//}

}